//============================================================================
/**
 *
 *	@file		drop_comm.h
 *	@brief		ポケスリング 通信データ定義
 *	@author		hosaka genya
 *	@data		2009.01.07
 *
 */
//============================================================================
#pragma once
#include "drop_define.h"

typedef struct DROP_COMM_CHILD_tag * DROP_COMM_CHILD_PTR;
typedef struct DROP_COMM_PARENT_tag * DROP_COMM_PARENT_PTR;

//=============================================================================
/**
 *								定数定義
 */
//=============================================================================

//--------------------------------------------------------------
///	ヒットエフェクトタイプ
//==============================================================
typedef enum {
	HIT_EFF_TYPE_NULL = 0,
	HIT_EFF_TYPE_TACKLE,
	HIT_EFF_TYPE_PLESS,
	HIT_EFF_TYPE_MAX,
} HIT_EFF_TYPE;

//=============================================================================
/**
 *								構造体定義
 */
//=============================================================================

//=============================================================================
/**
 *								プロトタイプ宣言
 */
//=============================================================================

//--------------------------------------------------------------
///	子機→親機への通信データ
//==============================================================
typedef struct DROP_COMM_CHILD_tag {
	u32	TpX : 8;
	u32	TpY : 8;
	u32	TouchVaild : 1;
	u32 ChgState : 2;
	u32 DuumyBit : 13;
	u8 Dummy[32];
} DROP_COMM_CHILD; // 36 byte

//--------------------------------------------------------------
///	チーム毎の通信データ
//==============================================================
typedef struct {
	u8 PokeX;
	u8 PokeY;
	u8 PokeZ : 6;
	u8 HitType : 2;
	u8 Score;

	u8 State : 4;		///< POKE_STATE
	u8 HitNetID : 2;	///< 衝突された相手のID
	u8 Active : 2;		///< 操作中のポケモンID

	u8 BtnSt : 3;		///< 交代ボタンの状態
	u8 Dir : 2;			///< 向き
	u8 ChgState : 2;	///< 交代デモ状況
	u8 ChgSe : 1;		///< 交代音判定用
} DROP_COMM_TEAM; // 6 byte

//--------------------------------------------------------------
///	親機→子機への通信データ
//==============================================================
typedef struct DROP_COMM_PARENT_tag {
	// 6 byte * 4 team  = 24 byte;
	DROP_COMM_TEAM Team[ ENTRY_MEMBER_NUM_MAX ];
	// 4 byte
	u8 padding[4];
	// 4 byte
	u32 DuumyBit1 : 7;
	u32 bHitSndNormal : 1;	///< ノーマル衝突SE
	u32 StateBit : 24;	///< state : normal, sweat, panic 2 bit * 12 poke
	// 4 byte
	u32 DuumyBit2 : 3;
	u32 GameTimer : 16;
	u32 HitEffBit : 12; ///< 3 bit * 4 箇所
	u32 EndFlag : 1;
} DROP_COMM_PARENT; // 36 byte (Dummy : 8 bit + 2 bit )
